package com.zjsru.plan2024.week;

/**
 *
 * 3084. 统计以给定字符开头和结尾的子字符串总数
 * @Author: cookLee
 * @Date: 2024-03-20
 */
public class CountSubstrings {

    /**
     * 主
     * \
     * 输入：s = "abada", c = "a"
     * 输出：6
     * 解释：以 "a" 开头和结尾的子字符串有： "abada"、"abada"、"abada"、"abada"、"abada"、"abada"。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        CountSubstrings  countSubstrings = new CountSubstrings();
        String s = "abada";
        char c = 'a';
        System.out.println(countSubstrings.countSubstrings(s, c));
    }

    /**
     * 计数子字符串
     *
     * @param s s
     * @param c c
     * @return long
     */
    public long countSubstrings(String s, char c) {
        //字符c出现一次时，组成一个字符串；出现二次时，组成2个字符串；出现三次时组成3个字符串，1+2+3+……+k
        //先统计c在s中出现的次数
        long count = s.chars().filter(v -> v == c).count();
        return count * (count + 1) / 2;
    }

}
